iT邦幫忙

2024 iThome 鐵人賽

DAY 26
0
佛心分享-刷題不只是刷題

轉生理工組後從零開始的leetcode刷題系列 第 26

day-26[medium.2554]maximum number of integers to choose from a range i

  • 分享至 

  • xImage
  •  

You are given an integer array banned and two integers n and maxSum. You are choosing some number of integers following the below rules:

The chosen integers have to be in the range [1, n].
Each integer can be chosen at most once.
The chosen integers should not be in the array banned.
The sum of the chosen integers should not exceed maxSum.
Return the maximum number of integers you can choose following the mentioned rules.


題目給咱一個整數陣列banned和兩個整數n、maxSum。
我們要從[1, n]範圍內選擇一些數,選擇時必須遵守以下規則:

  • 每個整數最多只能選一次
  • 被選的數不能出現在banned中
  • 被選的數加起來不超過maxSum
    目標是返回可以選擇的整數的最大數量

我的解題思路:

  1. 做一個布林值判斷有沒ban
  2. 從1開始遍歷到n
  3. 被ban就跳過
  4. 計算當前數字總和sum有沒有超過maxSum
  5. 沒有的話就選擇這個數字,計數器++
  6. 返回數量

class Solution {
    public int maxCount(int[] banned, int n, int maxSum) {
        int sum = 0;
        int count = 0;
        
        // 從1開始遍歷到n
        for (int i = 1; i <= n; i++) {
            boolean isBanned = false;
            for (int j = 0; j < banned.length; j++) {
                if (banned[j] == i) {
                    isBanned = true;
                    break; //!!!
                }
            }
            // 如果當前數字被ban就跳過
            if (isBanned) {
                continue;
            }
            // 總和不超過maxSum,則選擇該數字
            if (sum + i <= maxSum) {
                sum += i;
                count++;
            } else {
                // 總和超過
                break;
            }
        }
        return count; 
    }
}

結束這回合!但我途中continue和break有點用混了,花了意外多時間,哈哈。
https://ithelp.ithome.com.tw/upload/images/20241011/20169432SMgtLTYvPR.png


上一篇
day-25[medium.2563]count the number of fair pairs
下一篇
day-27[medium.2380]time needed to rearrange a binary string
系列文
轉生理工組後從零開始的leetcode刷題30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言